using System;
using Microsoft.SPOT;
using OST.Shared.SharedTypes;

namespace OST.Shared.Interfaces
{
    /// <summary>
    /// interface for logging-configuration provider
    /// </summary>
    public interface ILoggingConfigurationProvider : INotifyPropertyChanged
    {

        /// <summary>
        /// flag, checks if the actual config is applid
        /// </summary>
        bool IsConfigApplied { get; }

        /// <summary>
        /// manual trigger to read config
        /// </summary>
        LoggingConfiguration ReadConfiguration();

        /// <summary>
        /// persists the actual config
        /// </summary>
        /// <param name="loggingConfiguration">logging configuration instance</param>
        void SaveConfiguration(LoggingConfiguration loggingConfiguration);

        /// <summary>
        /// Applies actual specified logging configuration
        /// </summary>
        /// <param name="loggingConfiguration">logging configuration instance</param>
        void Apply(LoggingConfiguration loggingConfiguration);
    }
}
